package com.example.springboottest.util;

import org.apache.commons.lang3.StringUtils;

import java.sql.Array;
import java.util.ArrayList;
import java.util.List;

public class StringUtil extends StringUtils{

    /**
     * 去掉特殊字符
     *
     * @param str 字符串
     * @return
     */
    public static String removeSpecial(String str) {
        String regEx = "[\n`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。， 、？]";

        String newString = str.replaceAll(regEx, "");
        return newString;
    }

    /**
     * 去掉 HTML 标签
     *
     * @param str
     * @return
     */
    public static String removeHTMLLabel(String str) {
        String newStr = str.replaceAll("\\&[a-zA-Z]{1,10};", "").replaceAll("<[^>]*>", "").replaceAll("[(/>)<]", "");
        return newStr;
    }


    /**
     * 去掉 指定的字符串  #  &  ; ?  空格 （中文 英文的）
     *
     * @param str
     * @return
     */
    public static String removeSpecifiedStr(String str) {

        String newStr = str.replaceAll("#", "").replaceAll("&", "").replaceAll(";", "")
                .replaceAll("&#", "").replaceAll("%3f", "").replaceAll("[?]", "").replaceAll(" ", "").replaceAll("  ", "")
                .replaceAll("ampnbsp", " ").replaceAll("     ", "").replaceAll("\r|\n", "");
        ;

        return newStr;
    }




        /**
         * 删除起始字符
         * @param
         * @return
         *  @author xxj 2017年4月27日
         */
        public static String trimStart(String str,String trim){
            if(str==null){

                return null;
            }
            return str.replaceAll("^("+trim+")+", "");
        }

        /**
         * 以字符开头
         * @param s
         * @return
         *  @author xxj 2017年4月27日
         */
        public static boolean startWith(String str,String s){
            return str.startsWith(s);
        }

        /**
         * 删除末尾字符
         * @param
         * @return
         *  @author xxj 2017年4月27日
         */
        public static String trimEnd(String str,String trim){
            if(str==null){

                return null;
            }
            return str.replaceAll("("+trim+")+$", "");
        }

        /**
         * 去空格
         */
        public static String trim(String str)
        {
            return (str == null ? "" : str.trim());
        }

        /**
         * 合并路径
         * @param args
         * @return
         *  @author xxj 2017年4月27日
         */
        public static String Combine(String ...args){
            if(args==null || args.length==0){

                return "";
            }
            StringBuffer sbf = new StringBuffer();
            for(String s:args){
//			//纯协议开头不处理，如：http://,d:/,linux首个/不处理
//			if(s.matches("^[a-zA-z]+://$")){
//				sbf.append(s);
//				continue;
//			}
                //首位地址只删除尾部正反斜杠
                if(sbf.length()==0){
                    sbf.append(s.replaceAll("/{1,}$|\\{1,}$", ""));
                    continue;
                }

                if(sbf.length()>0){

                    sbf.append("/");
                }
                //去除首尾正反斜杠
                sbf.append(s
                        .replaceAll("^/{1,}|^\\{1,}", "")
                        .replaceAll("/{1,}$|\\{1,}$", ""));
            }

            return sbf.toString();
        }



        /**
         *  文件名称拼接   文件 + 版本 + 时间 + 随机串
         *
         *  88.xml      88V000120230428092135mUJ68
         *
         * @param fileName 文件的名称
         * @author liuyishuo
         * @create 2023/4/28
         * @return java.lang.String
         **/

        public static String splicingFileName(String fileName,String version,String dateTime,String RandomStr){

            if (StringUtils.isEmpty(fileName)) {
                return "";
            }
            StringBuffer substrName = new StringBuffer();

            if (!fileName.contains(".")) {
                substrName.append(fileName).append("_");
            }else {
                // 截取前面的名称
                substrName.append(fileName.substring(0, fileName.lastIndexOf("."))).append("_");
            }
            // 版本
            if(StringUtils.isNotEmpty(version)){
                substrName.append(version).append("_");
            }
            // 日期时间
            if(StringUtils.isNotEmpty(dateTime)){
                substrName.append(dateTime).append("_");
            }
            // 随机串
            if(StringUtils.isNotEmpty(RandomStr)){
                substrName.append(RandomStr).append("_");
            }
            // 如果后最后是下划线， 把最后的下划线去掉
            if ('_' == (substrName.charAt(substrName.length() - 1))) {
                substrName = substrName.deleteCharAt(substrName.length() - 1);
            }


            if (fileName.contains(".")) {
                // 截取后面的后缀
                substrName.append(fileName.substring(fileName.lastIndexOf(".")));
            }

            if (StringUtils.isNotBlank(substrName)) {
                return substrName.toString();
            }

            return "";
        }


    public static String getParamTo(String param) {

        ////    原符号       <        <=      >       >=       &        '        "
        ////    替换符号    &lt;     &lt;=   &gt;    &gt;=    &amp;   &apos;   &quot;
        String replaceParam = param.replace("&lt;", "<").replace("&gt;", ">");
        return replaceParam;
    }

    /**
     * 截取字字符串中公式
     *
     * @param modelElementsList
     * @param values1
     * @param values2
     * @author liuyishuo
     * @date 2023/7/7 11:47
     * @return void
     **/
    public static List<String> subStringFormula(List<String> modelElementsList, String values1, String values2) {

        if (modelElementsList.isEmpty()) {
            return null;
        }

        List<String> resultList =  new ArrayList<>();
        for (String str : modelElementsList) {
            if (str.contains(values1) && str.contains(values2)) {
                int values1int = str.indexOf(values1) + 1;
                int values2int = str.indexOf(values2);

                String substring = str.substring(values1int, values2int);
                substring.replace(values1, "");
                substring.replace(values2, "");
                resultList.add(substring);
            }
        }
        return resultList;
    }

    public static void main(String[] args) {

        String uu = " [-3&lt;=x&lt;=3]";
        String uu1= " [x&gt;-3||x&lt;3]";
        String paramTo = getParamTo(uu1);
        System.out.println(paramTo);
//
//
//        String m = "接收总线1通道数据_&<font style='font-size: 16px'>数据x采集[-3&lt;=x&lt;=3]</font>_&";
//
//        List<String> modelElementsList = Arrays.asList(m.split("_&"));
//
//        List<String> lists = StringUtil.subStringFormula(modelElementsList, "[", "]");
//        Object[] array = lists.stream().toArray();
//        System.out.println(array.toString());
//        System.out.println(lists.stream().toList());

    }

}
